package com.woniuxy.SpringAop1.service.advice;

/**
 * @author 佘赛飞
 * @create 2021 -11 -16 12:09 AM
 */

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class MyAspect implements MethodInterceptor {
    /**
     * 类似我们自己写的 动态代理
     *
     * @param invocation
     * @return 返回一个代理后的对象
     * @throws Throwable
     */
    public Object invoke(MethodInvocation invocation) throws Throwable {
        beforeAdvice();
        //执行的是目标方法 和之前手写的 method.invoke差不多
        Object proceed = invocation.proceed();
        afterAdvice();
        //这里是返回的对象
        return proceed;
    }


    public void beforeAdvice() {
        System.out.println("MyAspect.beforeAdvice：方法执行之前……");
    }

    public void afterAdvice() {
        System.out.println("MyAspect.afterAdvice: 方法执行之后……");
    }

}
